home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / sdla_x25.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  31KB  |  773 lines

  1. /*****************************************************************************
  2. * sdla_x25.h    Sangoma X.25 firmware API definitions.
  3. *
  4. * Author:    Nenad Corbic    <ncorbic@sangoma.com>
  5. *
  6. * Copyright:    (c) 1995-2000 Sangoma Technologies Inc.
  7. *
  8. *        This program is free software; you can redistribute it and/or
  9. *        modify it under the terms of the GNU General Public License
  10. *        as published by the Free Software Foundation; either version
  11.         2 of the License, or (at your option) any later version.
  12. * ============================================================================
  13. * Feb 28, 2000  Nenad Corbic    Updated for socket based x25api
  14. * Dec 13, 1996    Gene Kozin    Initial version
  15. *****************************************************************************/
  16. #ifndef    _SDLA_X25_H
  17. #define    _SDLA_X25_H
  18.  
  19. /*----------------------------------------------------------------------------
  20.  * Notes:
  21.  * ------
  22.  * 1. All structures defined in this file are byte-alined.  
  23.  *    Compiler    Platform    
  24.  *    --------    --------
  25.  *    GNU C        Linux
  26.  *
  27.  */
  28.  
  29. #ifndef    PACKED
  30. #    define    PACKED    __attribute__((packed))
  31. #endif    /* PACKED */
  32.  
  33. /******    CONSTANTS DEFINITIONS ***********************************************/
  34.  
  35. #define    X25_MAX_CHAN    255    /* max number of open X.25 circuits */
  36. #define    X25_MAX_DATA    1024    /* max length of X.25 data buffer */
  37. /*
  38.  * X.25 shared memory layout.
  39.  */
  40. #define    X25_MBOX_OFFS    0x16B0    /* general mailbox block */
  41. #define    X25_RXMBOX_OFFS    0x1AD0    /* receive mailbox */
  42. #define    X25_STATUS_OFFS    0x1EF0    /* X.25 status structure */
  43. #define X25_MB_VECTOR    0xE000    /* S514 mailbox window vecotr */
  44. #define X25_MISC_HDLC_BITS 0x1F00 /*X.25 miscallaneous HDLC bits */
  45.  
  46. /* code levels */
  47. #define HDLC_LEVEL 0x01
  48. #define X25_LEVEL  0x02
  49. #define X25_AND_HDLC_LEVEL 0x03
  50. #define DO_HDLC_LEVEL_ERROR_CHECKING 0x04
  51.  
  52. /****** DATA STRUCTURES *****************************************************/
  53.  
  54. /*----------------------------------------------------------------------------
  55.  * X.25 Command Block.
  56.  */
  57. typedef struct X25Cmd
  58. {
  59.     unsigned char command    PACKED;    /* command code */
  60.     unsigned short length    PACKED;    /* transfer data length */
  61.     unsigned char result    PACKED;    /* return code */
  62.     unsigned char pf    PACKED;    /* P/F bit */
  63.     unsigned short lcn    PACKED;    /* logical channel */
  64.     unsigned char qdm    PACKED;    /* Q/D/M bits */
  65.     unsigned char cause    PACKED;    /* cause field */
  66.     unsigned char diagn    PACKED;    /* diagnostics */
  67.     unsigned char pktType    PACKED;    /* packet type */
  68.     unsigned char resrv[4]    PACKED;    /* reserved */
  69. } TX25Cmd;
  70.  
  71. /*
  72.  * Defines for the 'command' field.
  73.  */
  74. /*----- General commands --------------*/
  75. #define X25_SET_GLOBAL_VARS    0x0B       /* set global variables */ 
  76. #define X25_READ_MODEM_STATUS    0x0C     /* read modem status */
  77. #define X25_READ_CODE_VERSION    0x15    /* read firmware version number */
  78. #define X25_TRACE_CONFIGURE    0x14    /* configure trace facility */
  79. #define X25_READ_TRACE_DATA    0x16    /* read trace data */
  80. #define    X25_SET_INTERRUPT_MODE    0x17    /* set interrupt generation mode */
  81. #define    X25_READ_INTERRUPT_MODE    0x18    /* read interrupt generation mode */
  82. /*----- HDLC-level commands -----------*/
  83. #define X25_HDLC_LINK_CONFIGURE    0x01    /* configure HDLC link level */   
  84. #define X25_HDLC_LINK_OPEN    0x02    /* open HDLC link */             
  85. #define X25_HDLC_LINK_CLOSE    0x03    /* close HDLC link */
  86. #define X25_HDLC_LINK_SETUP    0x04    /* set up HDLC link */ 
  87. #define X25_HDLC_LINK_DISC    0x05    /* disconnect DHLC link */
  88. #define X25_HDLC_LINK_STATUS    0x06    /* read DHLC link status */
  89. #define X25_HDLC_READ_STATS    0x07    /* read operational statistics */
  90. #define X25_HDLC_FLUSH_STATS    0x08     /* flush operational statistics */
  91. #define X25_HDLC_READ_COMM_ERR    0x09     /* read error statistics */
  92. #define X25_HDLC_FLUSH_COMM_ERR    0x0A    /* flush error statistics */
  93. #define X25_HDLC_FLUSH_BUFFERS    0x0D    /* flush HDLC-level data buffers */
  94. #define X25_HDLC_SPRVS_CNT_STAT 0x0F    /* read surervisory count status */
  95. #define X25_HDLC_SEND_UI_FRAME    0x10    /* send unnumbered information frame */
  96. #define X25_HDLC_WRITE        0x11    /* send HDLC information frame */
  97. #define X25_HDLC_READ        0x21    /* read HDLC information frame */
  98. #define X25_HDLC_READ_CONFIG    0x12    /* read HDLC configuration */
  99. #define X25_HDLC_SET_CONFIG    0x13    /* set HDLC configuration */
  100. #define SET_PROTOCOL_LEVEL    0x1F    /* set protocol level */
  101. /*----- X.25-level commands -----------*/
  102. #define X25_READ        0x22    /* read X.25 packet */
  103. #define X25_WRITE        0x23    /* send X.25 packet */
  104. #define X25_PLACE_CALL        0x30    /* place a call on SVC */
  105. #define X25_ACCEPT_CALL        0x31    /* accept incomming call */
  106. #define X25_CLEAR_CALL        0x32    /* clear call */
  107. #define X25_CLEAR_CONFRM    0x33    /* send clear confirmation packet */
  108. #define X25_RESET        0x34    /* send reset request packet */
  109. #define X25_RESET_CONFRM    0x35    /* send reset confirmation packet */
  110. #define X25_RESTART        0x36    /* send restart request packet */
  111. #define X25_RESTART_CONFRM    0x37    /* send restart confirmation packet */
  112. #define X25_INTERRUPT        0x38    /* send interrupt request packet */
  113. #define X25_INTERRUPT_CONFRM    0x39    /* send interrupt confirmation pkt */
  114. #define X25_REGISTRATION_RQST    0x3A    /* send registration request packet */
  115. #define X25_REGISTRATION_CONFRM    0x3B    /* send registration confirmation */
  116. #define X25_IS_DATA_AVAILABLE    0x40    /* querry receive queue */
  117. #define X25_INCOMMING_CALL_CTL    0x41    /* select incomming call options */
  118. #define X25_CONFIGURE_PVC    0x42    /* configure PVC */
  119. #define X25_GET_ACTIVE_CHANNELS    0x43    /* get a list of active circuits */
  120. #define X25_READ_CHANNEL_CONFIG    0x44    /* read virt. circuit configuration */
  121. #define X25_FLUSH_DATA_BUFFERS    0x45    /* flush X.25-level data buffers */
  122. #define X25_READ_HISTORY_TABLE    0x46    /* read asynchronous event log */
  123. #define X25_HISTORY_TABLE_CTL    0x47    /* control asynchronous event log */
  124. #define    X25_GET_TX_D_BIT_STATUS    0x48    /* is packet with D-bit acknowleged */
  125. #define    X25_READ_STATISTICS    0x49    /* read X.25-level statistics */
  126. #define    X25_FLUSH_STATISTICS    0x4A    /* flush X.25-level statistics */
  127. #define    X25_READ_CONFIGURATION    0x50    /* read HDLC & X.25 configuration */
  128. #define    X25_SET_CONFIGURATION    0x51    /* set HDLC & X.25 configuration */
  129.  
  130. /*
  131.  * Defines for the 'result' field.
  132.  */
  133. /*----- General results ---------------*/
  134. #define X25RES_OK        0x00
  135. #define X25RES_ERROR        0x01
  136. #define X25RES_LINK_NOT_IN_ABM    0x02    /* link is not in ABM mode */
  137. #define X25RES_LINK_CLOSED    0x03
  138. #define X25RES_INVAL_LENGTH    0x04
  139. #define X25RES_INVAL_CMD    0x05
  140. #define X25RES_UNNUMBERED_FRAME    0x06    /* unnunbered frame received */
  141. #define X25RES_FRM_REJECT_MODE    0x07    /* link is in Frame Reject mode */
  142. #define X25RES_MODEM_FAILURE    0x08    /* DCD and/or CTS dropped */
  143. #define X25RES_N2_RETRY_LIMIT    0x09    /* N2 retry limit has been exceeded */
  144. #define X25RES_INVAL_LCN    0x30    /* invalid logical channel number */
  145. #define X25RES_INVAL_STATE    0x31    /* channel is not in data xfer mode */
  146. #define X25RES_INVAL_DATA_LEN    0x32    /* invalid data length */
  147. #define X25RES_NOT_READY    0x33    /* no data available / buffers full */
  148. #define X25RES_NETWORK_DOWN    0x34
  149. #define X25RES_CHANNEL_IN_USE    0x35    /* there is data queued on this LCN */
  150. #define X25RES_REGST_NOT_SUPPRT    0x36    /* registration not supported */
  151. #define X25RES_INVAL_FORMAT    0x37    /* invalid packet format */
  152. #define X25RES_D_BIT_NOT_SUPPRT    0x38    /* D-bit pragmatics not supported */
  153. #define X25RES_FACIL_NOT_SUPPRT    0x39    /* Call facility not supported */
  154. #define X25RES_INVAL_CALL_ARG    0x3A    /* errorneous call arguments */
  155. #define X25RES_INVAL_CALL_DATA    0x3B    /* errorneous call user data */
  156. #define X25RES_ASYNC_PACKET    0x40    /* asynchronous packet received */
  157. #define X25RES_PROTO_VIOLATION    0x41    /* protocol violation occurred */
  158. #define X25RES_PKT_TIMEOUT    0x42    /* X.25 packet time out */
  159. #define X25RES_PKT_RETRY_LIMIT    0x43    /* X.25 packet retry limit exceeded */
  160. /*----- Command-dependent results -----*/
  161. #define X25RES_LINK_DISC    0x00    /* HDLC_LINK_STATUS */
  162. #define X25RES_LINK_IN_ABM    0x01    /* HDLC_LINK_STATUS */
  163. #define X25RES_NO_DATA        0x01    /* HDLC_READ/READ_TRACE_DATA*/
  164. #define X25RES_TRACE_INACTIVE    0x02    /* READ_TRACE_DATA */
  165. #define X25RES_LINK_IS_OPEN    0x01    /* HDLC_LINK_OPEN */
  166. #define X25RES_LINK_IS_DISC    0x02    /* HDLC_LINK_DISC */
  167. #define X25RES_LINK_IS_CLOSED    0x03    /* HDLC_LINK_CLOSE */
  168. #define X25RES_INVAL_PARAM    0x31    /* INCOMMING_CALL_CTL */
  169. #define X25RES_INVAL_CONFIG    0x35    /* REGISTR_RQST/CONFRM */
  170.  
  171. /*
  172.  * Defines for the 'qdm_bits' field.
  173.  */
  174. #define X25CMD_Q_BIT_MASK    0x04
  175. #define X25CMD_D_BIT_MASK    0x02
  176. #define X25CMD_M_BIT_MASK    0x01
  177.  
  178. /*
  179.  * Defines for the 'pkt_type' field.
  180.  */
  181. /*----- Asynchronous events ------*/
  182. #define ASE_CLEAR_RQST        0x02
  183. #define ASE_RESET_RQST        0x04
  184. #define ASE_RESTART_RQST    0x08
  185. #define ASE_INTERRUPT        0x10
  186. #define ASE_DTE_REGISTR_RQST    0x20
  187. #define ASE_CALL_RQST        0x30
  188. #define ASE_CALL_ACCEPTED    0x31
  189. #define ASE_CLEAR_CONFRM    0x32
  190. #define ASE_RESET_CONFRM    0x33
  191. #define ASE_RESTART_CONFRM    0x34
  192. #define ASE_INTERRUPT_CONFRM    0x35
  193. #define ASE_DCE_REGISTR_CONFRM    0x36
  194. #define ASE_DIAGNOSTIC        0x37
  195. #define ASE_CALL_AUTO_CLEAR    0x38
  196. #define AUTO_RESPONSE_FLAG    0x80
  197. /*----- Time-Out events ----------*/
  198. #define TOE_RESTART_RQST    0x03
  199. #define TOE_CALL_RQST        0x05
  200. #define TOE_CLEAR_RQST        0x08
  201. #define TOE_RESET_RQST        0x0A
  202. /*----- Protocol Violation events */
  203. #define PVE_CLEAR_RQST        0x32
  204. #define PVE_RESET_RQST        0x33
  205. #define PVE_RESTART_RQST    0x34
  206. #define PVE_DIAGNOSTIC        0x37
  207.  
  208. #define INTR_ON_RX_FRAME            0x01
  209. #define INTR_ON_TX_FRAME            0x02
  210. #define INTR_ON_MODEM_STATUS_CHANGE 0x04
  211. #define INTR_ON_COMMAND_COMPLETE    0x08
  212. #define INTR_ON_X25_ASY_TRANSACTION 0x10
  213. #define INTR_ON_TIMER            0x40
  214. #define DIRECT_RX_INTR_USAGE        0x80
  215.  
  216. #define NO_INTR_PENDING              0x00
  217. #define RX_INTR_PENDING            0x01    
  218. #define TX_INTR_PENDING            0x02
  219. #define MODEM_INTR_PENDING        0x04
  220. #define COMMAND_COMPLETE_INTR_PENDING     0x08
  221. #define X25_ASY_TRANS_INTR_PENDING    0x10
  222. #define TIMER_INTR_PENDING        0x40
  223.  
  224. /*----------------------------------------------------------------------------
  225.  * X.25 Mailbox.
  226.  *    This structure is located at offsets X25_MBOX_OFFS and X25_RXMBOX_OFFS
  227.  *    into shared memory window.
  228.  */
  229. typedef struct X25Mbox
  230. {
  231.     unsigned char opflag    PACKED;    /* 00h: execution flag */
  232.     TX25Cmd cmd        PACKED;    /* 01h: command block */
  233.     unsigned char data[1]    PACKED;    /* 10h: data buffer */
  234. } TX25Mbox;
  235.  
  236. /*----------------------------------------------------------------------------
  237.  * X.25 Time Stamp Structure.
  238.  */
  239. typedef struct X25TimeStamp
  240. {
  241.     unsigned char month    PACKED;
  242.     unsigned char date    PACKED;
  243.     unsigned char sec    PACKED;
  244.     unsigned char min    PACKED;
  245.     unsigned char hour    PACKED;
  246. } TX25TimeStamp;
  247.  
  248. /*----------------------------------------------------------------------------
  249.  * X.25 Status Block.
  250.  *    This structure is located at offset X25_STATUS_OFF into shared memory
  251.  *    window.
  252.  */
  253. typedef struct X25Status
  254. {
  255.     unsigned short pvc_map    PACKED;    /* 00h: PVC map */
  256.     unsigned short icc_map    PACKED;    /* 02h: Incomming Chan. map */
  257.     unsigned short twc_map    PACKED;    /* 04h: Two-way Cnan. map */
  258.     unsigned short ogc_map    PACKED;    /* 06h: Outgoing Chan. map */
  259.     TX25TimeStamp tstamp    PACKED;    /* 08h: timestamp (BCD) */
  260.     unsigned char iflags    PACKED;    /* 0Dh: interrupt flags */
  261.     unsigned char imask     PACKED; /* 0Eh: interrupt mask  */
  262.     unsigned char resrv    PACKED;    /* 0Eh: */
  263.     unsigned char gflags    PACKED;    /* 10h: misc. HDLC/X25 flags */
  264.     unsigned char cflags[X25_MAX_CHAN] PACKED; /* channel status bytes */
  265. } TX25Status;
  266.  
  267. /*
  268.  * Bitmasks for the 'iflags' field.
  269.  */
  270. #define X25_RX_INTR    0x01    /* receive interrupt */
  271. #define X25_TX_INTR    0x02    /* transmit interrupt */
  272. #define X25_MODEM_INTR    0x04    /* modem status interrupt (CTS/DCD) */
  273. #define X25_EVENT_INTR    0x10    /* asyncronous event encountered */
  274. #define X25_CMD_INTR    0x08    /* interface command complete */
  275.  
  276. /*
  277.  * Bitmasks for the 'gflags' field.
  278.  */
  279. #define X25_HDLC_ABM    0x01    /* HDLC is in ABM mode */
  280. #define X25_RX_READY    0x02    /* X.25 data available */
  281. #define X25_TRACE_READY    0x08    /* trace data available */
  282. #define X25_EVENT_IND    0x20    /* asynchronous event indicator */
  283. #define X25_TX_READY    0x40    /* space is available in Tx buf.*/
  284.  
  285. /*
  286.  * Bitmasks for the 'cflags' field.
  287.  */
  288. #define X25_XFER_MODE    0x80    /* channel is in data transfer mode */
  289. #define X25_TXWIN_OPEN    0x40    /* transmit window open */
  290. #define X25_RXBUF_MASK    0x3F    /* number of data buffers available */
  291.  
  292. /*****************************************************************************
  293.  * Following definitions structurize contents of the TX25Mbox.data field for
  294.  * different X.25 interface commands.
  295.  ****************************************************************************/
  296.  
  297. /* ---------------------------------------------------------------------------
  298.  * X25_SET_GLOBAL_VARS Command.
  299.  */
  300. typedef struct X25GlobalVars
  301. {
  302.     unsigned char resrv    PACKED;    /* 00h: reserved */
  303.     unsigned char dtrCtl    PACKED;    /* 01h: DTR control code */
  304.     unsigned char resErr    PACKED;    /* 01h: '1' - reset modem error */
  305. } TX25GlobalVars;
  306.  
  307. /*
  308.  * Defines for the 'dtrCtl' field.
  309.  */
  310. #define X25_RAISE_DTR    0x01
  311. #define X25_DROP_DTR    0x02
  312.  
  313. /* ---------------------------------------------------------------------------
  314.  * X25_READ_MODEM_STATUS Command.
  315.  */
  316. typedef struct X25ModemStatus
  317. {
  318.     unsigned char    status    PACKED;        /* 00h: modem status */
  319. } TX25ModemStatus;
  320.  
  321. /*
  322.  * Defines for the 'status' field.
  323.  */
  324. #define X25_CTS_MASK    0x20
  325. #define X25_DCD_MASK    0x08
  326.  
  327. /* ---------------------------------------------------------------------------
  328.  * X25_HDLC_LINK_STATUS Command.
  329.  */
  330. typedef struct X25LinkStatus
  331. {
  332.     unsigned char txQueued    PACKED;    /* 00h: queued Tx I-frames*/
  333.     unsigned char rxQueued    PACKED;    /* 01h: queued Rx I-frames*/
  334.     unsigned char station    PACKED;    /* 02h: DTE/DCE config. */
  335.     unsigned char reserved    PACKED;    /* 03h: reserved */
  336.     unsigned char sfTally    PACKED;    /* 04h: supervisory frame tally */
  337. } TX25LinkStatus;
  338.  
  339. /*
  340.  * Defines for the 'station' field.
  341.  */
  342. #define    X25_STATION_DTE    0x01    /* station configured as DTE */
  343. #define X25_STATION_DCE    0x02    /* station configured as DCE */
  344.  
  345. /* ---------------------------------------------------------------------------
  346.  * X25_HDLC_READ_STATS Command.
  347.  */
  348. typedef struct HdlcStats
  349. {                        /*    a number of ... */
  350.     unsigned short rxIFrames    PACKED;    /* 00h: ready Rx I-frames */
  351.     unsigned short rxNoseq        PACKED;    /* 02h: frms out-of-sequence */
  352.     unsigned short rxNodata        PACKED;    /* 04h: I-frms without data */
  353.     unsigned short rxDiscarded    PACKED;    /* 06h: discarded frames */
  354.     unsigned short rxTooLong    PACKED;    /* 08h: frames too long */
  355.     unsigned short rxBadAddr    PACKED;    /* 0Ah: frms with inval.addr*/
  356.     unsigned short txAcked        PACKED;    /* 0Ch: acknowledged I-frms */
  357.     unsigned short txRetransm    PACKED;    /* 0Eh: re-transmit. I-frms */
  358.     unsigned short t1Timeout    PACKED;    /* 10h: T1 timeouts */
  359.     unsigned short rxSABM        PACKED;    /* 12h: received SABM frames */
  360.     unsigned short rxDISC        PACKED;    /* 14h: received DISC frames */
  361.     unsigned short rxDM        PACKED;    /* 16h: received DM frames */
  362.     unsigned short rxFRMR        PACKED;    /* 18h: FRMR frames received */
  363.     unsigned short txSABM        PACKED;    /* 1Ah: transm. SABM frames*/
  364.     unsigned short txDISC        PACKED;    /* 1Ch: transm. DISC frames*/
  365.     unsigned short txDM        PACKED;    /* 1Eh: transm. DM frames */
  366.     unsigned short txFRMR        PACKED;    /* 20h: transm. FRMR frames*/
  367. } THdlcStats;
  368.  
  369. /* ---------------------------------------------------------------------------
  370.  * X25_HDLC_READ_COMM_ERR Command.
  371.  */
  372. typedef struct HdlcCommErr
  373. {                        /*    a number of ... */
  374.     unsigned char rxOverrun        PACKED;    /* 00h: Rx overrun errors */
  375.     unsigned char rxBadCrc        PACKED;    /* 01h: Rx CRC errors */
  376.     unsigned char rxAborted        PACKED;    /* 02h: Rx aborted frames */
  377.     unsigned char rxDropped        PACKED;    /* 03h: frames lost */
  378.     unsigned char txAborted        PACKED;    /* 04h: Tx aborted frames */
  379.     unsigned char txUnderrun    PACKED;    /* 05h: Tx underrun errors */
  380.     unsigned char txMissIntr    PACKED;    /* 06h: missed underrun ints */
  381.     unsigned char reserved        PACKED;    /* 07h: reserved */
  382.     unsigned char droppedDCD    PACKED;    /* 08h: times DCD dropped */
  383.     unsigned char droppedCTS    PACKED;    /* 09h: times CTS dropped */
  384. } THdlcCommErr;
  385.  
  386. /* ---------------------------------------------------------------------------
  387.  * X25_SET_CONFIGURATION & X25_READ_CONFIGURATION Commands.
  388.  */
  389. typedef struct X25Config
  390. {
  391. unsigned char baudRate        PACKED;    /* 00h:  */
  392.     unsigned char t1        PACKED;    /* 01h:  */
  393.     unsigned char t2        PACKED;    /* 02h:  */
  394.     unsigned char n2        PACKED;    /* 03h:  */
  395.     unsigned short hdlcMTU        PACKED;    /* 04h:  */
  396.     unsigned char hdlcWindow    PACKED;    /* 06h:  */
  397.     unsigned char t4        PACKED;    /* 07h:  */
  398.     unsigned char autoModem        PACKED;    /* 08h:  */
  399.     unsigned char autoHdlc        PACKED;    /* 09h:  */
  400.     unsigned char hdlcOptions    PACKED;    /* 0Ah:  */
  401.     unsigned char station        PACKED;    /* 0Bh:  */
  402.     unsigned char pktWindow        PACKED;    /* 0Ch:  */
  403.     unsigned short defPktSize    PACKED;    /* 0Dh:  */
  404.     unsigned short pktMTU        PACKED;    /* 0Fh:  */
  405.     unsigned short loPVC        PACKED;    /* 11h:  */
  406.     unsigned short hiPVC        PACKED;    /* 13h:  */
  407.     unsigned short loIncommingSVC    PACKED;    /* 15h:  */
  408.     unsigned short hiIncommingSVC    PACKED;    /* 17h:  */
  409.     unsigned short loTwoWaySVC    PACKED;    /* 19h:  */
  410.     unsigned short hiTwoWaySVC    PACKED;    /* 1Bh:  */
  411.     unsigned short loOutgoingSVC    PACKED;    /* 1Dh:  */
  412.     unsigned short hiOutgoingSVC    PACKED;    /* 1Fh:  */
  413.     unsigned short options        PACKED;    /* 21h:  */
  414.     unsigned char responseOpt    PACKED;    /* 23h:  */
  415.     unsigned short facil1        PACKED;    /* 24h:  */
  416.     unsigned short facil2        PACKED;    /* 26h:  */
  417.     unsigned short ccittFacil    PACKED;    /* 28h:  */
  418.     unsigned short otherFacil    PACKED;    /* 2Ah:  */
  419.     unsigned short ccittCompat    PACKED;    /* 2Ch:  */
  420.     unsigned char t10t20        PACKED;    /* 2Eh:  */
  421.     unsigned char t11t21        PACKED;    /* 2Fh:  */
  422.     unsigned char t12t22        PACKED;    /* 30h:  */
  423.     unsigned char t13t23        PACKED;    /* 31h:  */
  424.     unsigned char t16t26        PACKED;    /* 32H:  */
  425.     unsigned char t28        PACKED;    /* 33h:  */
  426.     unsigned char r10r20        PACKED;    /* 34h:  */
  427.     unsigned char r12r22        PACKED;    /* 35h:  */
  428.     unsigned char r13r23        PACKED;    /* 36h:  */
  429. } TX25Config;
  430.  
  431. /* ---------------------------------------------------------------------------
  432.  * X25_READ_CHANNEL_CONFIG Command.
  433.  */
  434. typedef struct X25ChanAlloc            /*----- Channel allocation -*/
  435. {
  436.     unsigned short loPVC        PACKED;    /* 00h: lowest PVC number */
  437.     unsigned short hiPVC        PACKED;    /* 02h: highest PVC number */
  438.     unsigned short loIncommingSVC    PACKED;    /* 04h: lowest incoming SVC */
  439.     unsigned short hiIncommingSVC    PACKED;    /* 06h: highest incoming SVC */
  440.     unsigned short loTwoWaySVC    PACKED;    /* 08h: lowest two-way SVC */
  441.     unsigned short hiTwoWaySVC    PACKED;    /* 0Ah: highest two-way SVC */
  442.     unsigned short loOutgoingSVC    PACKED;    /* 0Ch: lowest outgoing SVC */
  443.     unsigned short hiOutgoingSVC    PACKED;    /* 0Eh: highest outgoing SVC */
  444. } TX25ChanAlloc;
  445.  
  446. typedef struct X25ChanCfg        /*------ Channel configuration -----*/
  447. {
  448.     unsigned char type    PACKED;    /* 00h: channel type */
  449.     unsigned char txConf    PACKED;    /* 01h: Tx packet and window sizes */
  450.     unsigned char rxConf    PACKED;    /* 01h: Rx packet and window sizes */
  451. } TX25ChanCfg;
  452.  
  453. /*
  454.  * Defines for the 'type' field.
  455.  */
  456. #define    X25_PVC      0x01    /* PVC */
  457. #define    X25_SVC_IN    0x03    /* Incoming SVC */
  458. #define    X25_SVC_TWOWAY    0x07    /* Two-way SVC */
  459. #define    X25_SVC_OUT    0x0B    /* Outgoing SVC */
  460.  
  461. /*----------------------------------------------------------------------------
  462.  * X25_READ_STATISTICS Command.
  463.  */
  464. typedef struct X25Stats
  465. {                        /* number of packets Tx/Rx'ed */
  466.     unsigned short txRestartRqst    PACKED;    /* 00h: Restart Request */
  467.     unsigned short rxRestartRqst    PACKED;    /* 02h: Restart Request */
  468.     unsigned short txRestartConf    PACKED;    /* 04h: Restart Confirmation */
  469.     unsigned short rxRestartConf    PACKED;    /* 06h: Restart Confirmation */
  470.     unsigned short txResetRqst    PACKED;    /* 08h: Reset Request */
  471.     unsigned short rxResetRqst    PACKED;    /* 0Ah: Reset Request */
  472.     unsigned short txResetConf    PACKED;    /* 0Ch: Reset Confirmation */
  473.     unsigned short rxResetConf    PACKED;    /* 0Eh: Reset Confirmation */
  474.     unsigned short txCallRequest    PACKED;    /* 10h: Call Request */
  475.     unsigned short rxCallRequest    PACKED;    /* 12h: Call Request */
  476.     unsigned short txCallAccept    PACKED;    /* 14h: Call Accept */
  477.     unsigned short rxCallAccept    PACKED;    /* 16h: Call Accept */
  478.     unsigned short txClearRqst    PACKED;    /* 18h: Clear Request */
  479.     unsigned short rxClearRqst    PACKED;    /* 1Ah: Clear Request */
  480.     unsigned short txClearConf    PACKED;    /* 1Ch: Clear Confirmation */
  481.     unsigned short rxClearConf    PACKED;    /* 1Eh: Clear Confirmation */
  482.     unsigned short txDiagnostic    PACKED;    /* 20h: Diagnostic */
  483.     unsigned short rxDiagnostic    PACKED;    /* 22h: Diagnostic */
  484.     unsigned short txRegRqst    PACKED;    /* 24h: Registration Request */
  485.     unsigned short rxRegRqst    PACKED;    /* 26h: Registration Request */
  486.     unsigned short txRegConf    PACKED;    /* 28h: Registration Confirm.*/
  487.     unsigned short rxRegConf    PACKED;    /* 2Ah: Registration Confirm.*/
  488.     unsigned short txInterrupt    PACKED;    /* 2Ch: Interrupt */
  489.     unsigned short rxInterrupt    PACKED;    /* 2Eh: Interrupt */
  490.     unsigned short txIntrConf    PACKED;    /* 30h: Interrupt Confirm. */
  491.     unsigned short rxIntrConf    PACKED;    /* 32h: Interrupt Confirm. */
  492.     unsigned short txData        PACKED;    /* 34h: Data */
  493.     unsigned short rxData        PACKED;    /* 36h: Data */
  494.     unsigned short txRR        PACKED;    /* 38h: RR */
  495.     unsigned short rxRR        PACKED;    /* 3Ah: RR */
  496.     unsigned short txRNR        PACKED;    /* 3Ch: RNR */
  497.     unsigned short rxRNR        PACKED;    /* 3Eh: RNR */
  498. } TX25Stats;
  499.  
  500. /*----------------------------------------------------------------------------
  501.  * X25_READ_HISTORY_TABLE Command.
  502.  */
  503. typedef struct X25EventLog
  504. {
  505.     unsigned char    type    PACKED;    /* 00h: transaction type */
  506.     unsigned short    lcn    PACKED;    /* 01h: logical channel num */
  507.     unsigned char    packet    PACKED;    /* 03h: async packet type */
  508.     unsigned char    cause    PACKED;    /* 04h: X.25 cause field */
  509.     unsigned char    diag    PACKED;    /* 05h: X.25 diag field */
  510.     TX25TimeStamp    ts    PACKED;    /* 06h: time stamp */
  511. } TX25EventLog;
  512.  
  513. /*
  514.  * Defines for the 'type' field.
  515.  */
  516. #define X25LOG_INCOMMING    0x00
  517. #define X25LOG_APPLICATION     0x01
  518. #define X25LOG_AUTOMATIC    0x02
  519. #define X25LOG_ERROR        0x04
  520. #define X25LOG_TIMEOUT        0x08
  521. #define X25LOG_RECOVERY        0x10
  522.  
  523. /*
  524.  * Defines for the 'packet' field.
  525.  */
  526. #define X25LOG_CALL_RQST    0x0B
  527. #define X25LOG_CALL_ACCEPTED    0x0F
  528. #define X25LOG_CLEAR_RQST    0x13
  529. #define X25LOG_CLEAR_CONFRM    0x17
  530. #define X25LOG_RESET_RQST    0x1B
  531. #define X25LOG_RESET_CONFRM    0x1F
  532. #define X25LOG_RESTART_RQST    0xFB
  533. #define X25LOG_RESTART_COMFRM    0xFF
  534. #define X25LOG_DIAGNOSTIC    0xF1
  535. #define X25LOG_DTE_REG_RQST    0xF3
  536. #define X25LOG_DTE_REG_COMFRM    0xF7
  537.  
  538. /* ---------------------------------------------------------------------------
  539.  * X25_TRACE_CONFIGURE Command.
  540.  */
  541. typedef struct X25TraceCfg
  542. {
  543.     unsigned char flags    PACKED;    /* 00h: trace configuration flags */
  544.     unsigned char timeout    PACKED;    /* 01h: timeout for trace delay mode*/
  545. } TX25TraceCfg;
  546.  
  547. /*
  548.  * Defines for the 'flags' field.
  549.  */
  550. #define X25_TRC_ENABLE        0x01    /* bit0: '1' - trace enabled */
  551. #define X25_TRC_TIMESTAMP    0x02    /* bit1: '1' - time stamping enabled*/
  552. #define X25_TRC_DELAY        0x04    /* bit2: '1' - trace delay enabled */
  553. #define X25_TRC_DATA        0x08    /* bit3: '1' - trace data packets */
  554. #define X25_TRC_SUPERVISORY    0x10    /* bit4: '1' - trace suprvisory pkts*/
  555. #define X25_TRC_ASYNCHRONOUS    0x20    /* bit5: '1' - trace asynch. packets*/
  556. #define X25_TRC_HDLC        0x40    /* bit6: '1' - trace all packets */
  557. #define X25_TRC_READ        0x80    /* bit7: '1' - get current config. */
  558.  
  559. /* ---------------------------------------------------------------------------
  560.  * X25_READ_TRACE_DATA Command.
  561.  */
  562. typedef struct X25Trace            /*----- Trace data structure -------*/
  563. {
  564.     unsigned short length    PACKED;    /* 00h: trace data length */
  565.     unsigned char type    PACKED;    /* 02h: trace type */
  566.     unsigned char lost_cnt    PACKED;    /* 03h: N of traces lost */
  567.     TX25TimeStamp tstamp    PACKED;    /* 04h: mon/date/sec/min/hour */
  568.     unsigned short millisec    PACKED;    /* 09h: ms time stamp */
  569.     unsigned char data[0]    PACKED;    /* 0Bh: traced frame */
  570. } TX25Trace;
  571.  
  572. /*
  573.  * Defines for the 'type' field.
  574.  */
  575. #define X25_TRC_TYPE_MASK    0x0F    /* bits 0..3: trace type */
  576. #define X25_TRC_TYPE_RX_FRAME    0x00    /* received frame trace */
  577. #define X25_TRC_TYPE_TX_FRAME    0x01    /* transmitted frame */
  578. #define X25_TRC_TYPE_ERR_FRAME    0x02    /* error frame */
  579.  
  580. #define X25_TRC_ERROR_MASK    0xF0    /* bits 4..7: error code */
  581. #define X25_TRCERR_RX_ABORT    0x10    /* receive abort error */
  582. #define X25_TRCERR_RX_BADCRC    0x20    /* receive CRC error */
  583. #define X25_TRCERR_RX_OVERRUN    0x30    /* receiver overrun error */
  584. #define X25_TRCERR_RX_TOO_LONG    0x40    /* excessive frame length error */
  585. #define X25_TRCERR_TX_ABORT    0x70    /* aborted frame transmittion error */
  586. #define X25_TRCERR_TX_UNDERRUN    0x80    /* transmit underrun error */
  587.  
  588. /*****************************************************************************
  589.  * Following definitions describe HDLC frame and X.25 packet formats.
  590.  ****************************************************************************/
  591.  
  592. typedef struct HDLCFrame        /*----- DHLC Frame Format ----------*/
  593. {
  594.     unsigned char addr    PACKED;    /* address field */
  595.     unsigned char cntl    PACKED;    /* control field */
  596.     unsigned char data[0]    PACKED;
  597. } THDLCFrame;
  598.  
  599. typedef struct X25Pkt            /*----- X.25 Paket Format ----------*/
  600. {
  601.     unsigned char lcn_hi    PACKED;    /* 4 MSB of Logical Channel Number */
  602.     unsigned char lcn_lo    PACKED;    /* 8 LSB of Logical Channel Number */
  603.     unsigned char type    PACKED;
  604.     unsigned char data[0]    PACKED;
  605. } TX25Pkt;
  606.  
  607. /*
  608.  * Defines for the 'lcn_hi' field.
  609.  */
  610. #define    X25_Q_BIT_MASK        0x80    /* Data Qualifier Bit mask */
  611. #define    X25_D_BIT_MASK        0x40    /* Delivery Confirmation Bit mask */
  612. #define    X25_M_BITS_MASK        0x30    /* Modulo Bits mask */
  613. #define    X25_LCN_MSB_MASK    0x0F    /* LCN most significant bits mask */
  614.  
  615. /*
  616.  * Defines for the 'type' field.
  617.  */
  618. #define    X25PKT_DATA        0x01    /* Data packet mask */
  619. #define    X25PKT_SUPERVISORY    0x02    /* Supervisory packet mask */
  620. #define    X25PKT_CALL_RQST    0x0B    /* Call Request/Incoming */
  621. #define    X25PKT_CALL_ACCEPTED    0x0F    /* Call Accepted/Connected */
  622. #define    X25PKT_CLEAR_RQST    0x13    /* Clear Request/Indication */
  623. #define    X25PKT_CLEAR_CONFRM    0x17    /* Clear Confirmation */
  624. #define    X25PKT_RESET_RQST    0x1B    /* Reset Request/Indication */
  625. #define    X25PKT_RESET_CONFRM    0x1F    /* Reset Confirmation */
  626. #define    X25PKT_RESTART_RQST    0xFB    /* Restart Request/Indication */
  627. #define    X25PKT_RESTART_CONFRM    0xFF    /* Restart Confirmation */
  628. #define    X25PKT_INTERRUPT    0x23    /* Interrupt */
  629. #define    X25PKT_INTERRUPT_CONFRM    0x27    /* Interrupt Confirmation */
  630. #define    X25PKT_DIAGNOSTIC    0xF1    /* Diagnostic */
  631. #define    X25PKT_REGISTR_RQST    0xF3    /* Registration Request */
  632. #define    X25PKT_REGISTR_CONFRM    0xF7    /* Registration Confirmation */
  633. #define    X25PKT_RR_MASKED    0x01    /* Receive Ready packet after masking */
  634. #define    X25PKT_RNR_MASKED    0x05    /* Receive Not Ready after masking  */
  635.  
  636.  
  637. typedef struct {
  638.     TX25Cmd cmd        PACKED;
  639.     char data[X25_MAX_DATA]    PACKED;
  640. } mbox_cmd_t;
  641.  
  642.  
  643. typedef struct {
  644.     unsigned char  qdm    PACKED;    /* Q/D/M bits */
  645.     unsigned char  cause    PACKED;    /* cause field */
  646.     unsigned char  diagn    PACKED;    /* diagnostics */
  647.     unsigned char  pktType  PACKED;
  648.     unsigned short length   PACKED;
  649.     unsigned char  result    PACKED;
  650.     unsigned short lcn    PACKED;
  651.     char reserved[7]    PACKED;
  652. }x25api_hdr_t;
  653.  
  654.  
  655. typedef struct {
  656.     x25api_hdr_t hdr    PACKED;
  657.     char data[X25_MAX_DATA]    PACKED;
  658. }x25api_t;
  659.  
  660.  
  661. /* 
  662.  * XPIPEMON Definitions
  663.  */
  664.  
  665. /* valid ip_protocol for UDP management */
  666. #define UDPMGMT_UDP_PROTOCOL 0x11
  667. #define UDPMGMT_XPIPE_SIGNATURE         "XLINK8ND"
  668. #define UDPMGMT_DRVRSTATS_SIGNATURE     "DRVSTATS"
  669.  
  670. /* values for request/reply byte */
  671. #define UDPMGMT_REQUEST    0x01
  672. #define UDPMGMT_REPLY    0x02
  673. #define UDP_OFFSET    12
  674.  
  675.  
  676. typedef struct {
  677.     unsigned char opp_flag  PACKED; /* the opp flag */
  678.     unsigned char command    PACKED;    /* command code */
  679.     unsigned short length    PACKED;    /* transfer data length */
  680.     unsigned char result    PACKED;    /* return code */
  681.     unsigned char pf    PACKED;    /* P/F bit */
  682.     unsigned short lcn    PACKED;    /* logical channel */
  683.     unsigned char qdm    PACKED;    /* Q/D/M bits */
  684.     unsigned char cause    PACKED;    /* cause field */
  685.     unsigned char diagn    PACKED;    /* diagnostics */
  686.     unsigned char pktType    PACKED;    /* packet type */
  687.     unsigned char resrv[4]    PACKED;    /* reserved */
  688. } cblock_t;
  689.  
  690. typedef struct {
  691.     ip_pkt_t         ip_pkt        PACKED;
  692.     udp_pkt_t        udp_pkt        PACKED;
  693.     wp_mgmt_t         wp_mgmt           PACKED;
  694.         cblock_t                cblock          PACKED;
  695.         unsigned char           data[4080]      PACKED;
  696. } x25_udp_pkt_t;
  697.  
  698.  
  699. typedef struct read_hdlc_stat {
  700.     unsigned short inf_frames_rx_ok PACKED;
  701.         unsigned short inf_frames_rx_out_of_seq PACKED;
  702.     unsigned short inf_frames_rx_no_data PACKED;
  703.     unsigned short inf_frames_rx_dropped PACKED;
  704.     unsigned short inf_frames_rx_data_too_long PACKED;
  705.     unsigned short inf_frames_rx_invalid_addr PACKED;
  706.     unsigned short inf_frames_tx_ok PACKED;
  707.         unsigned short inf_frames_tx_retransmit PACKED;
  708.            unsigned short T1_timeouts PACKED;
  709.     unsigned short SABM_frames_rx PACKED;
  710.     unsigned short DISC_frames_rx PACKED;
  711.     unsigned short DM_frames_rx PACKED;
  712.     unsigned short FRMR_frames_rx PACKED;
  713.     unsigned short SABM_frames_tx PACKED;
  714.     unsigned short DISC_frames_tx PACKED;
  715.     unsigned short DM_frames_tx PACKED;
  716.     unsigned short FRMR_frames_tx PACKED;
  717. } read_hdlc_stat_t;
  718.  
  719. typedef struct read_comms_err_stats{
  720.     unsigned char overrun_err_rx PACKED;
  721.     unsigned char CRC_err PACKED;
  722.     unsigned char abort_frames_rx PACKED;
  723.     unsigned char frames_dropped_buf_full PACKED;
  724.     unsigned char abort_frames_tx PACKED;
  725.     unsigned char transmit_underruns PACKED;
  726.     unsigned char missed_tx_underruns_intr PACKED;
  727.     unsigned char reserved PACKED;
  728.     unsigned char DCD_drop PACKED;
  729.     unsigned char CTS_drop PACKED;
  730. } read_comms_err_stats_t;
  731.  
  732. typedef struct trace_data {
  733.     unsigned short length PACKED;
  734.     unsigned char  type PACKED;
  735.     unsigned char  trace_dropped PACKED;
  736.     unsigned char  reserved[5] PACKED;
  737.     unsigned short timestamp PACKED;
  738.         unsigned char  data PACKED;
  739. } trace_data_t;
  740.  
  741. enum {UDP_XPIPE_TYPE};
  742.  
  743. #define XPIPE_ENABLE_TRACING                    0x14
  744. #define XPIPE_DISABLE_TRACING                   0x14
  745. #define XPIPE_GET_TRACE_INFO                    0x16
  746. #define XPIPE_FT1_READ_STATUS                   0x74
  747. #define XPIPE_DRIVER_STAT_IFSEND                0x75
  748. #define XPIPE_DRIVER_STAT_INTR                  0x76
  749. #define XPIPE_DRIVER_STAT_GEN                   0x77
  750. #define XPIPE_FLUSH_DRIVER_STATS                0x78
  751. #define XPIPE_ROUTER_UP_TIME                    0x79        
  752. #define XPIPE_SET_FT1_MODE            0x81
  753. #define XPIPE_FT1_STATUS_CTRL            0x80
  754.  
  755.  
  756. /* error messages */
  757. #define NO_BUFFS_OR_CLOSED_WIN  0x33
  758. #define DATA_LENGTH_TOO_BIG     0x32
  759. #define NO_DATA_AVAILABLE       0x33
  760. #define Z80_TIMEOUT_ERROR       0x0a   
  761. #define    NO_BUFFS        0x08
  762.  
  763.  
  764. /* Trace options */
  765. #define TRACE_DEFAULT        0x03
  766. #define TRACE_SUPERVISOR_FRMS    0x10
  767. #define TRACE_ASYNC_FRMS    0x20
  768. #define TRACE_ALL_HDLC_FRMS    0x40
  769. #define TRACE_DATA_FRMS        0x08
  770.  
  771.  
  772. #endif    /* _SDLA_X25_H */
  773.